package org.example.JVM.ASM.Visitor;


/**
 * @description:
 * @author: farprt
 * @create: 2022-11-16 16:44
 **/
public interface ClassVisitor {
    
    /**
     * @param version
     * @param access
     * @param className
     * @return:
     * @Author: farprt
     * @date: 2022/11/16 16:44
     * @description: 设置class文件结构的版本号，类的访问标志，类名
     */
    void visit(int version,String access,String className);
    
    /**
     * @param access
     * @param name
     * @param descriptor
     * @return: {@link FieldVisitor}
     * @Author: farprt
     * @date: 2022/11/16 16:45
     * @description: 为类添加一个字段
     */
    FieldVisitor visitField(String access,String name,String descriptor);
    
    /**
     * @param access
     * @param name
     * @param descriptor
     * @return: {@link MethodVisitor}
     * @Author: farprt
     * @date: 2022/11/16 16:46
     * @description: 为类添加一个方法
     */
    MethodVisitor visitMethod(String access,String name,String descriptor);
}